package com.itxuhang.spring.reader;

import com.itxuhang.spring.parser.BeanDefinitionParserDelegate;
import com.itxuhang.spring.registry.BeanDefinitionRegistry;
import org.dom4j.Element;

import java.util.List;

/**
 * 该类就是负责对整个Document文档对象进行解析
 */
public class BeanDefinitionDocumentReader {

    private BeanDefinitionRegistry beanDefinitionRegistry ;

    public BeanDefinitionDocumentReader(BeanDefinitionRegistry beanDefinitionRegistry) {
        this.beanDefinitionRegistry = beanDefinitionRegistry;
    }

    /**
     *
     * @param rootElement   <beans>标签
     */
    public void parseBeanDefinitions(Element rootElement) {
        BeanDefinitionParserDelegate delegate = new BeanDefinitionParserDelegate(beanDefinitionRegistry);

        List<Element> elements = rootElement.elements();
        for (Element element : elements) {
            // <beans>标签下，有很多子标签
            // 获取标签名称
            String name = element.getName();
            if (name.equals("bean")){
                delegate.parseDefaultBeanDefinition(element);
            }else{
                delegate.parseCustomBeanDefinition(element);
            }
        }
    }
}
